home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 2: CDPD 1 / Almathera Ten on Ten - Disc 2: CDPD 1.iso / pd / 351-375 / 359 / dice / dice.lzh / lib / amiga / exit.c < prev    next >
C/C++ Source or Header  |  1990-04-20  |  704b  |  56 lines

  1.  
  2. /*
  3.  *  EXIT.C
  4.  *
  5.  *  (c)Copyright 1990, Matthew Dillon, All Rights Reserved
  6.  */
  7.  
  8. #include <stdio.h>
  9. #include <lib/atexit.h>
  10. #include <libraries/dosextens.h>
  11.  
  12. typedef struct Process Process;
  13.  
  14. extern long *__MemList;
  15. extern void *_WBMsg;
  16. AtExit *_ExitBase;
  17.  
  18. void
  19. exit(code)
  20. int code;
  21. {
  22.     {
  23.     AtExit *eb;
  24.     for (eb = _ExitBase; eb; eb = eb->Next)
  25.         (*eb->Func)();
  26.     }
  27.  
  28.     fclose(stdin);
  29.     fclose(stdout);
  30.     fclose(stderr);
  31.  
  32.     /*
  33.      *    stdio
  34.      */
  35.  
  36.     while (_Iod)
  37.     fclose(_Iod);
  38.  
  39.     /*
  40.      *    file descriptors
  41.      */
  42.  
  43.     __closeall();
  44.  
  45.     /*
  46.      *    low level exit (handles allocated memory & workbench)
  47.      */
  48.  
  49.     if (_WBMsg) {
  50.     Forbid();
  51.     ReplyMsg(_WBMsg);
  52.     }
  53.     _exit(code);
  54. }
  55.  
  56.